//============================================================================
/**
 *
 *	@file		catch_comm.h
 *	@brief		UFOキャッチ 通信データ
 *	@author		hosaka genya
 *	@data		2008.12.01
 *
 */
//============================================================================
#pragma once
#include "catch_define.h"

typedef struct CATCH_COMM_CHILD_tag * CATCH_COMM_CHILD_PTR;
typedef struct CATCH_COMM_PARENT_tag * CATCH_COMM_PARENT_PTR;

//=============================================================================
/**
 *								定数定義
 */
//=============================================================================
enum
{
	COMM_BIT_OFS_DIR = 2,
	COMM_BIT_OFS_FALL = 1,
	COMM_BIT_OFS_JUMP = 1,
};

//=============================================================================
/**
 *								構造体定義
 */
//=============================================================================
//--------------------------------------------------------------
///	子機→親機への通信データ
//==============================================================
typedef struct CATCH_COMM_CHILD_tag {
	u32	TpX : 8;
	u32	TpY : 8;
	u32	TouchVaild : 1;
	u32 DuumyBit : 15;
	u8 DUmmy[32];
} CATCH_COMM_CHILD;

//--------------------------------------------------------------
///	UFO用通信ワーク
//==============================================================
typedef struct CATCH_COMM_UFO_tag {
	u16 PosY : 7;	///< キャラ単位座標。2で割って使用することで中間座標を表現
	u16 Vec : 4;
	u16 State : 3;
	u16 GetPlayerID : 2;
} CATCH_COMM_UFO; // 2 byte

//--------------------------------------------------------------
///	親機→子機への通信データ
//==============================================================
typedef struct CATCH_COMM_PARENT_tag {
	// 2 * 2 = 4 byte
	CATCH_COMM_UFO Ufo[ UFO_ID_MAX ];

	// 2 byte * 12 = 24 byte
	u8 PokeX[ ACT_POKE_MAX ];	///< ポケモンのX座標
	u8 PokeY[ ACT_POKE_MAX ];	///< ポケモンのY座標

	// 4 byte
	u32 DirBit : 24;	///< 向き 2 bit * 12 poke
	u32 GameSec : 6;	///< ゲーム経過時間(秒)
	u32 ScoreHeader : 2;

	// 4 byte
	u32 Score : 7;		// score
	u32 FallBit : 12;	// 1 bit * 12 poke
	u32 JumpBit : 12;	// 1 bit * 12 poke
	u32 EndFlag : 1;
} CATCH_COMM_PARENT; // 36 byte
